<?php

session_start();
require_once '../model/Arquivo.php';
require_once '../model/EspacoCultural.php';

class ArquivoDLO {

    private static $arquivoDLO;

    private function __construct() {
        
    }

    /**
     * @method ArquivoDLO getInstance() para obter uma única instância do controlador
     * @return ArquivoDLO
     */
    public static function &getInstance() {
        if (!isset(self::$arquivoDLO)) {
            if (!isset($_SESSION['arquivoDLO'])) {
                $_SESSION['arquivoDLO'] = serialize(new ArquivoDLO());
            }
            self::$arquivoDLO = unserialize($_SESSION['arquivoDLO']);
        }
        return self::$arquivoDLO;
    }

    public function cadastrar(&$conteudo, &$descricao, &$cod_espaco, &$tipo, &$nome) {
        $arquivo = new Arquivo();
        $arquivo->setConteudo($conteudo);
        $arquivo->setDescricao($descricao);
        $arquivo->setTipo($tipo);
        $arquivo->setNome($nome);
        $arquivo->setEspaco(EspacoCultural::consultar($cod_espaco));
        $arquivo->cadastrar();
    }

    public function &listar(&$cod_espaco, &$filtro) {
        $result = &Arquivo::listar($cod_espaco, $filtro);
        $resultado = array();
        for ($i = 0; $i < sizeof($result); $i++) {
            $row = array();
            $row['cod_arquivo'] = &$result[$i]->getCod_arquivo();
            $row['descricao'] = &$result[$i]->getDescricao();
            $row['tipo'] = &$result[$i]->getTipo();
            $row['nome'] = &$result[$i]->getNome();
            $row['cod_espaco'] = &$cod_espaco;
            $resultado[$i] = &$row;
            unset($row);
        }
        return $resultado;
    }

    public function &consultar(&$cod_arquivo) {
        $arquivo = &Arquivo::consultar($cod_arquivo);
        $row['cod_arquivo'] = &$arquivo->getCod_arquivo();
        $row['conteudo'] = &$arquivo->getConteudo();
        $row['descricao'] = &$arquivo->getDescricao();
        $row['tipo'] = &$arquivo->getTipo();
        $row['nome'] = &$arquivo->getNome();
        return $row;
    }

    public function excluir(&$cod_arquivo) {
        $arquivo = &Arquivo::consultar($cod_arquivo);
        $arquivo->excluir();
    }

    public function alterar(&$cod_arquivo, &$campo_id, &$campo_valor) {
        $arquivo = &Arquivo::consultar($cod_arquivo);
        $arquivo->alterarCampo($campo_id, $campo_valor);
    }
}
?>